home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / yacc / flexyacc / aflex.lha / aflex / doc / example.l < prev    next >
Text File  |  1991-05-16  |  1KB  |  62 lines

  1. LOWER    [a-z]
  2. UPPER    [A-Z]
  3.  
  4. %%
  5.  
  6. {LOWER}+       { Lower_Case := Lower_Case + 1; 
  7.                  TEXT_IO.PUT(To_Upper_Case(Example_DFA.YYText)); }
  8.  
  9.           -- convert all alphabetic words in lower case
  10.           -- to upper case
  11.  
  12. {UPPER}+       { Upper_Case := Upper_Case + 1;
  13.                  TEXT_IO.PUT(Example_DFA.YYText); }
  14.  
  15.           -- write uppercase word as is
  16.  
  17. \n             { TEXT_IO.NEW_LINE;}
  18.  
  19. .              { TEXT_IO.PUT(Example_DFA.YYText); }
  20.                  -- write anything else as is
  21.  
  22. %%
  23. with U_Env;  -- VADS environment package for UNIX
  24. procedure Example is
  25.  
  26.   type Token is (End_of_Input, Error);
  27.  
  28.   Tok        : Token;
  29.   Lower_Case : NATURAL := 0;   -- frequency of lower case words
  30.   Upper_Case : NATURAL := 0;   -- frequency of upper case words
  31.  
  32.   function To_Upper_Case (Word : STRING) return STRING is
  33.   Temp : STRING(1..Word'LENGTH);
  34.   begin
  35.     for i in 1.. Word'LENGTH loop
  36.       Temp(i) := CHARACTER'VAL(CHARACTER'POS(Word(i)) - 32); 
  37.     end loop;
  38.     return Temp;
  39.   end To_Upper_Case;
  40.   
  41.  
  42. -- function YYlex will go here!!
  43. ##
  44.  
  45.  
  46. begin  -- Example
  47.  
  48.   Example_IO.Open_Input     (U_Env.argv(1).s);
  49.  
  50.   Read_Input :
  51.   loop
  52.     Tok := YYLex;
  53.     exit Read_Input
  54.       when Tok = End_of_Input;
  55.   end loop Read_Input;
  56.  
  57.   TEXT_IO.NEW_LINE;
  58.   TEXT_IO.PUT_LINE("Number of lowercase words is => " & 
  59.            INTEGER'IMAGE(Lower_Case));
  60.   TEXT_IO.PUT_LINE("Number of uppercase words is => " & 
  61.            INTEGER'IMAGE(Upper_Case));
  62. end Example;